Amazon FSx for NetApp ONTAPをTerraformで構築してみた

Amazon FSx for NetApp ONTAPをTerraformで構築してみた

バージョン管理システムやビルド環境をクラウド化するときのストレージとして...

Clock Icon2024.04.02

ゲームソリューション部の えがわ です。

本日はAmazon FSx for NetApp ONTAP(以降FSxN)をTerraformで構築してみました。

Amazon FSx for NetApp ONTAPとは

FSxNは高いパフォーマンスを提供し、バックアップとリストアのプロセスが容易です。
ゲーム業界ではビルド環境バージョン管理システムのストレージとして、とても適しています。

Amazon FSx for NetApp ONTAP は、 NetAp]pの人気のある ONTAP ファイルシステム上に構築された、信頼性が高く、スケーラブルで、パフォーマンスが高く、機能豊富なファイルストレージを提供するフルマネージドサービスです。FSx for ONTAP は、 NetApp ファイルシステムの使い慣れた機能、パフォーマンス、機能、および API オペレーションと、フルマネージド型の の俊敏性、スケーラビリティ、およびシンプルさを組み合わせますAWS のサービス。

事前準備

VPCの準備

VPCは以下のTerraformで作成しています。

各種パラメータの準備

VPC ID, Subnet ID, CIDRをメモしておきます。
VPC ID, Subnet IDはCLIでも取得できます。
また、FSxNはプライベートサブネットに配置します。

VPC IDの取得

aws ec2 describe-vpcs \
  --query 'Vpcs[*].{VpcId:VpcId,Name:Tags[?Key==`Name`]|[0].Value}'\
  --output text

Subnet IDの取得

aws ec2 describe-subnets \
  --filters "Name=vpc-id,Values={選択したVPC ID}" \
  --query 'Subnets[*].{SubnetId:SubnetId,Name:Tags[?Key==`Name`]|[0].Value}' \
  --output text

環境構築

リポジトリ

Terraform

resource "aws_security_group" "nfs_sg" {
  name   = "${var.project_name}-nfs-sg"
  vpc_id = var.vpc_id

  ingress {
    from_port   = 2049
    to_port     = 2049
    protocol    = "tcp"
    cidr_blocks = [var.vpc_cidr_block]
  }

  egress {
    from_port   = 0
    to_port     = 0
    protocol    = "-1"
    cidr_blocks = ["0.0.0.0/0"]
  }
}

resource "aws_fsx_ontap_file_system" "file_system" {
  storage_capacity    = 1024
  subnet_ids          = [var.subnet_id]
  preferred_subnet_id = var.subnet_id
  deployment_type     = "SINGLE_AZ_1"
  throughput_capacity = 128
  security_group_ids  = [aws_security_group.nfs_sg.id]
  fsx_admin_password  = var.fsx_admin_password

  tags = {
    Name = "${var.project_name}-fsxn"
  }

  timeouts {
    create = "60m"
    update = "60m"
  }
}

resource "aws_fsx_ontap_storage_virtual_machine" "svm" {
  file_system_id = aws_fsx_ontap_file_system.file_system.id
  name           = "${var.project_name}-svm"
}

resource "aws_fsx_ontap_volume" "volume" {
  name                       = "vol"
  junction_path              = "/vol1"
  size_in_megabytes          = 1048576
  storage_efficiency_enabled = true
  storage_virtual_machine_id = aws_fsx_ontap_storage_virtual_machine.svm.id

  lifecycle {
    ignore_changes = [
      tiering_policy[0].cooling_period
    ]
  }
}

Terraformを実行するとファイルシステムの作成に30分ほど(Single-AZ)時間がかかります。

※ファイルシステムの作成だけで24分かかりました。

module.fsxn.aws_fsx_ontap_file_system.file_system: Creating...
module.fsxn.aws_fsx_ontap_file_system.file_system: Still creating... [10s elapsed]
module.fsxn.aws_fsx_ontap_file_system.file_system: Still creating... [20s elapsed]
...中略
module.fsxn.aws_fsx_ontap_file_system.file_system: Still creating... [24m10s elapsed]
module.fsxn.aws_fsx_ontap_file_system.file_system: Still creating... [24m20s elapsed]
module.fsxn.aws_fsx_ontap_file_system.file_system: Creation complete after 24m24s [id=fs-xxxxxxxxxxxxxx]

作成したFSxNをEC2にマウントしてみます。
マウントコマンドについてはAWSのマネジメントコンソールから確認できます。

EC2にSSMで接続し表示されているコマンドを実行します。

マウントすることができました!
画像では113GBが使用済みとなっていますが、16%はファイルシステム用に予約されています。

他の NetApp ONTAP ファイルシステムと同様に、ファイルシステムの SSD ストレージ容量の最大 16% は ONTAP オーバーヘッド用に予約されています。つまり、ファイルの保存には使用できません。ONTAP オーバーヘッドは次のように割り当てられます。11% は NetApp ONTAP ソフトウェア用に予約されています。30 テビバイト (TiB) を超える SSD ストレージ容量を持つファイルシステムの場合、6% が予約されています。5% は、ファイルシステムの両方のファイルサーバ間でデータを同期させるために必要な、集約スナップショット用に確保されています。

サイジングについては以下のブログを参考になります。

最後に

FSxNは強力なストレージオペレーティングシステムで、高度なデータ管理機能と優れた拡張性を備えています。
ゲーム業界ではバージョン管理システムやビルド環境のストレージとして、とても適しています。
この記事が参考になれば幸いです。

この記事をシェアする

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.